Micron Document
`:top
`!Java Native Interface`! (`!JNI`!) ist eine standardisierte `F33f`_`[Anwendungsprogrammierschnittstelle`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Application_Programming_Interface]`_`f (API), die die Möglichkeit schafft, aus der Programmiersprache `F33f`_`[Java`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Java_(Programmiersprache)]`_`f heraus `F33f`_`[Plattform-spezifische`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Plattform_(Computer)]`_`f `F33f`_`[Funktionen`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Funktion_(Programmierung)]`_`f bzw. `F33f`_`[Methoden`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Methode_(objektorientierte_Programmierung)]`_`f aufzurufen.

Im Gegensatz zu gewöhnlichen Java-Programmen ist ein Java-Programm, das JNI-Aufrufe verwendet, nur dann plattformunabhängig, wenn die native `F33f`_`[Programmbibliothek`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Programmbibliothek]`_`f auf allen Plattformen verfügbar ist.

>>Contents

• `F0af`_`[Einsatzzweck`#einsatzzweck]`_`f
• `F0af`_`[Java ruft native Methode auf`#java-ruft-native-methode-auf]`_`f
• `F0af`_`[Natives Programm ruft Java auf`#natives-programm-ruft-java-auf]`_`f
• `F0af`_`[Siehe auch`#siehe-auch]`_`f
• `F0af`_`[Weblinks`#weblinks]`_`f

-─

>>Einsatzzweck

JNI ermöglicht es, native Methoden zu schreiben für Situationen, in denen es nicht möglich ist, ausschließlich Java als Programmiersprache einzusetzen. Dies ist der Fall, wenn beispielsweise die Standard-Java-Klassenbibliothek bestimmte Plattform-abhängige Features oder andere Programmbibliotheken nicht unterstützt. Weiterhin ist es per JNI möglich, eine weitere in einer anderen Programmiersprache programmierte Anwendung für Java zugreifbar zu machen. Viele Klassen der Java-Standardbibliothek basieren auf JNI, um beispielsweise die Datei-Ein- und Ausgabe oder Soundwiedergabe zu ermöglichen. Indem Java Leistungs- und Plattform-abhängige Implementierungen in die Standardbibliothek integriert, kann der Java-Programmierer und -Nutzer diese Features in sicherer und Plattform-unabhängiger Weise nutzen.

Gelegentlich wird JNI als Fluchttür ("escape hatch") für Java-Entwickler bezeichnet, da es ihnen den Zugriff auf Funktionalitäten ermöglicht, der andernfalls über die Standard-Java-API nicht möglich wäre. Es stellt die Schnittstelle zu anderen Programmiersprachen wie C oder C++ dar.

Mit JNI ist es möglich, Funktionen einer `F33f`_`[Windows`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Microsoft_Windows]`_`f-`F33f`_`[DLL`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Dynamic_Link_Library]`_`f oder einer `*`F33f`_`[shared library`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Shared_Library]`_`f`* unter `F33f`_`[Linux`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Linux]`_`f bzw. `F33f`_`[Mac OS X`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Mac_OS_X]`_`f, die in `F33f`_`[C`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=C_(Programmiersprache)]`_`f oder `F33f`_`[C++`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=C++]`_`f programmiert sind, aus Java aufzurufen. Umgekehrt können „native“ Programme Java-Methoden über JNI aufrufen oder eine `F33f`_`[JVM`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Java_Virtual_Machine]`_`f ausführen.

>>>Java ruft native Methode auf

Um aus Java eine native Methode aufzurufen, muss diese zunächst als „`B100`F9d9native`f`b“ deklariert werden. Zudem muss das Objekt selbst die native Programmbibliothek mit dem Aufruf von „`B100`F9d9System.loadLibrary("`*<Name der Bibliothek>`*")`f`b“ laden, bevor die native Methode selbst aufgerufen werden kann.

Das Java-Programm wird übersetzt und anschließend mit dem Softwarewerkzeug `*`B100`F9d9javah`f`b`* eine `F33f`_`[Header-Datei`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Header-Datei]`_`f erstellt, die die Funktionsdeklaration vorgibt. Mit dieser Header-Datei kann dann die native Programmbibliothek erstellt werden.

In der nativen Programmbibliothek müssen spezielle Typen für primitive und komplexe Datentypen verwendet werden. Beispielsweise wird für ein Wahrheitswert `B100`F9d9jboolean`f`b verwendet, anstatt der Typ `B100`F9d9boolean`f`b und `B100`F9d9jdouble`f`b für Variablen vom Typ `B100`F9d9double`f`b. Außer den Abbildungen für primitive Typen, existieren auch Abbildungen für komplexe Typen. Zu den primitiven und komplexen Typen zählen folgende:

Eine der populärsten Anwendungen von JNI ist die Programmbibliothek `*`F33f`_`[Standard Widget Toolkit`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Standard_Widget_Toolkit]`_`f`* (SWT), die über JNI die Verwendung von Elementen der `F33f`_`[Grafischen Benutzeroberfläche`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Grafische_Benutzeroberfläche]`_`f des `F33f`_`[Betriebssystems`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Betriebssystem]`_`f ermöglicht.

>>>Natives Programm ruft Java auf

Aus einem nativen Programm kann Java-Code aufgerufen werden. Dies ist beispielsweise notwendig, um eine enge Verzahnung zwischen Java und dem nativen Programm zu ermöglichen.

>>Siehe auch

• `F33f`_`[Java Native Access`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Java_Native_Access]`_`f (JNA) – Alternative zu JNI

>>Weblinks

• `*Java Native Interface`* – offizielle Dokumentation bei `F33f`_`[Oracle`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Oracle]`_`f
• Projektseite des JavaService
• Compiled Native Interface (CNI) Alternative zu JNI (siehe auch `F33f`_`[GNU Compiler for Java`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=GNU_Compiler_for_Java]`_`f)
• NativeCall Alternative, um native Methoden ohne JNI aus Java aufzurufen
• JNI Typen

`c`F0af`_`[↑ Back to top`#top]`_`f`a